<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // function fn(arg) {
    //     console.log(arg);
    // }
    // fn(1);
    // fn([1, 2, 3]);
    // fn(function () {  //函数可以作为参数 到另一个函数中(被该函数的形参接收 可以通过形参调用  -> 至于什么时候调用 -> 看需求)
    //     console.log(1111);
    // });



</script>
<script>
    // 数组的遍历方法 -> 官方给定专门遍历数组的方法


    // list.push(10);  push是数组的方法 10是实际参数

    // 将函数作为参数(实参)传入到另一个函数中  => 回调函数(callback)

    // every(callback)  数组判断 =>  判断数组中的元素是否都满足条件
    // 传入一个回调函数, 每次循环时执行传入的回调函数(期望循环执行的内容),回调函数返回一个条件表达式,如果都满足条件则返回true  有一个不满足返回false(后面就不执行了)
    // 回调函数有三个参数function(item, index, array){}
    // item 循环的当前元素
    // index 循环的当前下标 
    // array 原数组


    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // list.every(function (item, index, array) { // 形参
    //     console.log(item, index, array);
    //     // return undefined;  -> 转布尔值false  有一个不满足(后面就不执行了)
    //     return true;  // 全都满足 -> 走到最后
    // })

    var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    var result = list.every(function (item, index, array) { // 形参
        console.log(item, index, array);
        // return item % 2 == 0; // true / false   是否都是 偶数
        return item % 2 == 1; // true / false   是否都是 奇数
        // return item >= 0;
    })
    console.log(result);


    // 流程解析
    function myEvery() {
        var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
        var fn = function (item, index, array) { // 形参
            console.log(item, index, array);
        }

        var flag = true; //假设都满足条件
        for (var i in list) {
            // list[i]  循环的当前元素
            // i 循环的当前下标
            // list  原数组
            // var item = list[i];
            var res = fn(list[i], i, list); //实际参数  -> 回调函数返回一个条件表达式 -> true / false
            if (!!res == false) { // 如果返回值不是true和false  -> 隐式转化为布尔值
                flag = false; //存在不满足条件的元素
                break;
            }
        }
        // console.log(arr);
        return flag;
    }

    // filter
    // some
    // every

    // 数组排序 sort

</script>

</html>